/*
 *
 */
package org.jiscinvolve.astrodabis.barberry.common.data;

import org.jiscinvolve.astrodabis.barberry.common.core.Owned;
import org.jiscinvolve.astrodabis.barberry.common.core.Tracked;
import org.jiscinvolve.astrodabis.barberry.common.core.Identified;
import org.jiscinvolve.astrodabis.barberry.common.core.Identifier;

/**
 *
 */
public interface TapTable
extends Identified, Tracked
    {

    public interface Factory
        {

        public Identifier ident(String ident);

        public TapTable create(TapService parent, String name);
        public TapTable createQuick(TapService parent, String name);

        public Iterable<TapTable> select();

        public TapTable select(Identifier ident);

        public Iterable<TapTable> select(String name);

        public Iterable<TapTable> select(TapService parent);

        public TapTable select(TapService parent, String name);

        public TapTable select(TapService parent, Identifier ident);

        public void update(TapTable table);

        }

    public TapService parent();

    public String name();

    public String text();

    public interface TapColumns
        {

        public Identifier ident(String ident);

        public TapColumn create(String name);
        public TapColumn createQuick(String name);

        public TapColumn select(Identifier ident);

        public TapColumn select(String name);

        public Iterable<TapColumn> select();

        }

    public TapColumns columns();

    }

